<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>闭包理解</title>
</head>
<body>
<!-- 
    1. 如何产生闭包？
        - 当一个嵌套的内部（子）函数引用了嵌套的外部（父）函数的变量（函数）时，就产生了闭包
    2. 闭包到底是什么？
        - 使用 chrome 调试查看
        - 理解一：闭包是嵌套的内部函数（绝大部分人）
        - 理解二：包含被引用变量（函数）的对象（极少数人）
        - ❗ 注意：闭包存在于嵌套的内部函数中
    3. 产生闭包的条件
        - 函数嵌套
        - 内部函数引用了外部函数的数据（变量/函数）
 -->

<script type="text/javascript">
    function fn1(){
        var a = 2
        var b = '123'
        function fn2(){ // 执行函数定义就会产生闭包（不用调用内部函数）
            console.log(a)
        }
    }
    fn1()
</script>
</body>
</html>